package cn.cq.admin.service;

import cn.cq.admin.entity.dto.PasswordResetDto;
import cn.cq.admin.entity.dto.UserLoginDto;
import cn.cq.admin.entity.dto.UserModifyDto;
import cn.cq.admin.entity.dto.UserPageDto;
import cn.cq.admin.entity.model.TUser;
import cn.cq.admin.entity.vo.UserVo;
import cn.dev33.satoken.util.SaResult;
import com.baomidou.mybatisplus.extension.service.IService;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
* @author  dicraft
* @description 针对表【t_user(用户表)】的数据库操作Service
*/
public interface TUserService extends IService<TUser> {

    /**
     * @author  dicraft
     * @description 用户登录
     * @param loginDto
     * @return
     */
    SaResult accountLogin(UserLoginDto loginDto, HttpServletRequest request);

    /**
     * 检查登录用户是否登录，如果登录，则返回用户资源
     * @return
     */
    SaResult doCheckLogin();


    /**
     * @author  dicraft
     * @description 新增用户
     * @param user
     * @return
     */
    SaResult doSave(TUser user);

    /**
     * @author  dicraft
     * @description 修改用户
     * @param user
     * @return
     */
    SaResult doModify(UserModifyDto user);

    /**
     * @author  dicraft
     * @description 删除用户（支持单条、批量）
     * @param ids
     * @return
     */
    SaResult doRemove(List<Long> ids);

    /**
     * @author  dicraft
     * @description 分页查询用户列表
     * @param pageDto
     * @return
     */
    SaResult doList(UserPageDto pageDto);

    /**
     * @author  dicraft
     * @description 获取当前登录用户信息
     * @return
     */
    SaResult doGet();

    /**
     * @author  dicraft
     * @description 密码修改
     * @param passwordResetDto
     * @return
     */
    SaResult doPasswordReset(PasswordResetDto passwordResetDto);

    List<UserVo> doListAll();
}
